ShaderArrayParamDef

Object Hierarchy | 関連する C++クラス:ShaderArrayParamDef

継承

SIObject

ShaderParamDef

ShaderArrayParamDef

導入

v9.0 (2011)

カテゴリ

ICE シェーダ

詳細

このオブジェクトはShaderArrayParameterインスタンスの定義を表します。このシェーダパラメータに含まれる配列要素を設定および取得できます(ShaderArrayParamDef.ItemInitialValuesが戻すValueMapオブジェクトを使用して設定または取得します)。

ShaderArrayParamDef オブジェクトを作成するには、新しいパラメータ定義をシェーダパラメータ定義コンテナに追加するときにShaderParamDefContainer.AddArrayParamDefメソッドを使用します。

メソッド

IsClassOfオペレータ IsEqualToオペレータ    
       

プロパティ

Application Attributesオペレータ Capabilitiesオペレータ Categories
DataTypeオペレータ DefaultValueオペレータ DisplayNameオペレータ FullNameオペレータ
HasDefaultValueオペレータ Help IsArrayオペレータ IsInputオペレータ
IsOutputオペレータ IsStructureオペレータ ItemDefオペレータ ItemInitialCountオペレータ
ItemInitialValuesオペレータ ItemNameオペレータ MainPortオペレータ MaxValueオペレータ
MinValueオペレータ Nameオペレータ NestedObjects Origin
OriginPath Parent StaticArrayオペレータ SuggestedMaxValueオペレータ
SuggestedMinValueオペレータ Texturableオペレータ Typeオペレータ  
       

JScript の例

/* 
        This example demonstrates how to create a dynamic shader definition 
        with an input array parameter and then populate the array using the
        ValueMap object created via the ItemInitialValues property.
*/
app = Application;
app.NewScene("", false);
var oShaderDef = XSIFactory.CreateShaderDef("MyParser", "MyArrayDemo", 1, 0);
oShaderDef.AddShaderFamily(siShaderFamilyTexture);
app.LogMessage("Shader definition name: " + oShaderDef.Name);
// Set up shader parameter definition options to use with new input parameter
oShaderInParamDefOptions = XSIFactory.CreateShaderParamDefOptions();
oShaderInParamDefOptions.SetAnimatable(false);
oShaderInParamDefOptions.SetTexturable(true);
oShaderInParamDefOptions.SetInspectable(true);
oShaderInParamDefOptions.SetShortName("Fluffy Bunnies");
// Add input parameter to definition
oInputParams = oShaderDef.InputParamDefs;
var oArrayParamDef = oInputParams.AddArrayParamDef("flurry", siScalarParameterType, oShaderInParamDefOptions);
// Make it an array of 6 items and populate the array via the ValueMap interface
oArrayParamDef.ItemInitialCount = 6;
var oValueMap = oArrayParamDef.ItemInitialValues;
oValueMap.Set("a", 0);
oValueMap.Set("b", 8);
oValueMap.Set("c", 16);
oValueMap.Set("d", 32);
oValueMap.Set("e", 64);
oValueMap.Set("f", 128);
// Now print info to see what we have
for (var i=0; i<oShaderDef.InputParamDefs.Definitions.Count; i++) {
        LogParamInfo("\t", oShaderDef.InputParamDefs.Definitions.Item(i));
}       
// INFO : Shader definition name: MyParser.MyArrayDemo.1.0
// INFO :       Parameter name: Fluffy Bunnies
// INFO :       ClassName: ShaderArrayParamDef
// INFO :       Family: 65
// INFO :       Yes, I'm an array!
// INFO :       I'm an INPUT parameter
// INFO :               Parameter name: Item
// INFO :               ClassName: ShaderStructParamDef
// INFO :               Family: 3
// INFO :               I'm an INPUT parameter
// INFO :               ItemName: Item
// INFO :               ItemInitialCount: 6
// INFO :               ItemInitialValues: 
// INFO :                       Names: a, b, c, d, e, f
// INFO :                       Values: 0, 8, 16, 32, 64, 128
// Convenience function to log info iteratively
function LogParamInfo( in_indent, in_paramdef )
{
        app.LogMessage(in_indent + "Parameter name: " + in_paramdef.DisplayName);
        app.LogMessage(in_indent + "ClassName: " + app.ClassName(in_paramdef));
        app.LogMessage(in_indent + "Family: " + in_paramdef.DataType);
        if (in_paramdef.IsArray) {
                app.LogMessage(in_indent + "Yes, I'm an array!");
        }
        if (in_paramdef.IsInput) {
                app.LogMessage(in_indent + "I'm an INPUT parameter");
        }
        if (in_paramdef.IsOutput) {
                app.LogMessage(in_indent + "I'm an OUTPUT parameter");
        }
        if (in_paramdef.DataType == siShaderDataTypeArray) {
                LogParamInfo(in_indent + "\t", in_paramdef.ItemDef);
                in_indent += "\t";
                app.LogMessage(in_indent + "ItemName: " + in_paramdef.ItemName);
                if (in_paramdef.StaticArray) {
                        app.LogMessage(in_indent + "Is a Static Array");
                }
                app.LogMessage(in_indent + "ItemInitialCount: " + in_paramdef.ItemInitialCount);
                if (in_paramdef.ItemInitialCount) {
                        app.LogMessage(in_indent + "ItemInitialValues: ");
                        var vbaInitNames = new VBArray(in_paramdef.ItemInitialValues.Names);
                        var aInitNames = vbaInitNames.toArray();
                        var vbaInitValues = new VBArray(in_paramdef.ItemInitialValues.Values);
                        var aInitValues = vbaInitValues.toArray();
                        app.LogMessage(in_indent + "\tNames: " + aInitNames.join(", "));
                        app.LogMessage(in_indent + "\tValues: " + aInitValues.join(", "));
                }
        }
}

関連項目

ShaderParamDefContainer.AddParamDef ShaderParamDefContainer.AddArrayParamDef ShaderParameter.Definition ShaderParamDefContainer ShaderStructParamDef Shader Definition examples installed with Softimage Shader Parser examples installed with Softimage